文章同步更新在 CodeFictionist
今天的主題是稍微來解個惑。什麼疑惑呢?
在前面的文章中,說過:
@keyframes與animation負責控制動畫的時間與進度。
但我們在第二天的 CSS 變形基礎中有談到一個 CSS 屬性 transition,足夠細心你會發現他的語法跟 animation 幾乎完全一致。
所以 transition 跟 animation 到底有什麼差別呢?
transition vs animation其實最簡單的差別在於 transition 接受的屬性遠比 animation 少。
從前面文章可以知道 transition 可以調控的只有:
property
duration
timing-function
delay
而 animation 則可以多控制:
iteration-count
direction
play-state
fill-mode
(不懂上面屬性在幹嘛的可以飛回去看看前面的文章)
transition 跟 animation 比起來就像個先天不足的小孩,天生就比它的手足 animation 少了一些功能。
所以說既生瑜何生亮呢?
然而實際情況是,他們根本就不是在同一個賽場上。
先說結論:
transition 適合作為使用者與元素互動的過度效果,而 animation 則適合做網頁中常駐的動畫。
我們拆成幾個項目來看造成他們彼此之間差異的原因。
基於上面提到 transition 天生比 animation 少了一些屬性,這也就意味著 transition 的可控性比 animation 低。
它不能控制動畫的播放次數、方向、播放狀態,也無法如 animation 一樣透過 @keyframes 來細化控制動畫的進度。
transition 是被動的,這意味著它只有在某些事件觸發時才會執行。
比如說 :hover、focus、active 等等。
而 animation 的觸發則不需要特定的觸發事件。它可以自動或根據條件開始,並通過 @keyframes 來定義動畫的多個階段。
因為觸發方式的不同,transition 通常只會執行一次,而 animation 則可以通過 iteration-count 來控制重複次數。
沒想到吧,今天有結語 ~
誒好今天沒有 code 範例,想看 animation 跟 transition 的範例可以回去看看前面的文章。
但總之,今天開這個主題是想探討 transition 跟 animation 這兩個長得極為相似的 CSS 屬性他們之間的差異。
現在我們至少有一個結論:
transition適合作為使用者與元素互動的過度效果,animation適合做網頁中常駐的動畫。